package _05_二叉树;

/**
 *  https://leetcode-cn.com/problems/lowest-common-ancestor-of-a-binary-tree/submissions/
 * @Author: haogege
 * @Date: 2021/8/30
 */
public class _236_二叉树的最近公共祖先 {

    // 此函数的作用找寻二叉树的最近公共主先
    public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
        if (root == null || root == p || root == q) return root;

        // 找寻左子树的最大公共祖先
        TreeNode left = lowestCommonAncestor(root.left, p, q);

        TreeNode right = lowestCommonAncestor(root.right, p, q);

        if (left != null && right != null) return root;

        return left == null? right: left;
    }

}
